package com.example.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

import com.example.bean.dto.BlockchainCompanyInfoDTO;
import com.example.bean.dto.CustomerCompanyDTO;
import com.example.bean.vo.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;

import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.NumberToTextConverter;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.web.multipart.MultipartFile;



/**
 * 导入Excel文件（支持“XLS”和“XLSX”格式）
 */
public class ReadExcel {

	public final static Map<String, String> projectlevels = new HashMap() {
		{
			put("国家级", "1");
			put("省级", "2");
			put("其他", "3");

		}
	};


	public final static Map<String, String> returnWorkStatus = new HashMap() {
		{
			put("未复工", "1");
			put("复工", "2");

		}
	};

	public final static Map<String, String> firsttypes = new HashMap() {
		{
			put("硬件组件", "1");
			put("软件组件", "2");
			put("平台", "3");
			put("服务", "4");
			put("应用", "5");
			put("产业服务", "6");
			put("基础设施", "7");
			put("其他", "8");

		}
	};
	public final static Map<String, String> sectypes = new HashMap() {
		{
			put("可信存储和计算", "11");
			put("矿机芯片", "12");
			put("共识算法", "21");
			put("智能合约", "22");
			put("密钥管理", "23");
			put("跨链/并发", "24");
			put("安全", "25");
			put("交易所", "26");
			put("钱包", "27");
			put("公有链", "31");
			put("联盟链", "32");
			put("闭源联盟链", "33");
			put("平台即服务", "41");
			put("区块链云服务BaaS", "42");
			put("金融服务", "51");
			put("存证/溯源", "52");
			put("数字身份", "53");
			put("供应链", "54");
			put("民生", "55");
			put("政务", "56");
			put("支付", "57");
			put("行业组织", "61");
			put("市场服务", "62");
			put("产品服务", "63");
			put("基础设施", "71");
			put("其他", "81");

		}
	};

	public BlockchainCompanyInfoDTO readExcel(Workbook wb, StringBuilder infoBuilder, Map<String, List<String>> sysDicts) {

		ZoneId zone = ZoneId.systemDefault();
		BlockchainCompanyInfoDTO dto = new BlockchainCompanyInfoDTO();
		Sheet sheetAt0 = wb.getSheetAt(0);//0表示企业信息表
		Sheet sheetAt1 = wb.getSheetAt(1);// 1表示产品表
		Sheet sheetAt3 = wb.getSheetAt(2);// 2表示投融资情况
//		Sheet sheetAt4 = wb.getSheetAt(3);//3表示企业创始人
//		Sheet sheetAt5 = wb.getSheetAt(4);//4表示技术带头人
//		Sheet sheetAt6 = wb.getSheetAt(5);//5表示专家顾问
		int sheetcount = wb.getNumberOfSheets();

		if (sheetcount ==6) {
			infoBuilder.append("导入失败，原因:<br/>表数量有缺失，请进行补充");
			infoBuilder.append("<br/>");
			return null;
		} 
		else if(sheetAt0==null) {
			infoBuilder.append("导入失败，原因:<br/>企业信息表缺失");
			infoBuilder.append("<br/>");
			return null;
		}

		else if(sheetAt3==null) {
			infoBuilder.append("导入失败，原因:<br/>投融资情况缺失");
			infoBuilder.append("<br/>");
			return null;
		}

//		else if(sheetAt4==null) {
//			infoBuilder.append("导入失败，原因:<br/>企业创始人缺失");
//			infoBuilder.append("<br/>");
//			return null;
//		}
//		else if(sheetAt5==null) {
//			infoBuilder.append("导入失败，原因:<br/>技术带头人缺失");
//			infoBuilder.append("<br/>");
//			return null;
//		}
//		else if(sheetAt6==null) {
//			infoBuilder.append("导入失败，原因:<br/>专家顾问缺失");
//			infoBuilder.append("<br/>");
//			return null;
//		}

		Row row = sheetAt0.getRow(2);

		if (row == null) {
			infoBuilder.append("导入失败，原因:<br/>企业信息表内容为空");
			infoBuilder.append("<br/>");
			return null;
		}
		try {
			int count = 0;
			/*
			 * 推荐人单位
			 */
			dto.setAdvanceUnit(getCellStringValueOrNull(row, count++));
			if (dto.getAdvanceUnit() == null ||dto.getAdvanceUnit().length() < 1||!sysDicts.get("advance_unit").contains(dto.getAdvanceUnit())) {
				infoBuilder.append("导入失败，原因:<br/>推荐人单位不能为空，并且只能为"+sysDicts.get("advance_unit").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			
			/*
			 * 推荐人名称
			 */
			dto.setAdvanceName(getCellStringValueOrNull(row, count++));
			if (dto.getAdvanceName() == null ||dto.getAdvanceName().length() < 1) {
				infoBuilder.append("导入失败，原因:<br/>推荐人姓名不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			/*
			 * 推荐人联系方式
			 */
			dto.setAdvancePhone(getCellStringValueOrNull(row, count++));
			if (dto.getAdvancePhone() == null ||dto.getAdvancePhone().length() < 1) {
				infoBuilder.append("导入失败，原因:<br/>推荐人联系方式不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			/*
			 * 企业名称
			 */
			dto.setName(getCellStringValueOrNull(row, count++));
			if (dto.getName() == null || dto.getName().length() < 1 || dto.getName().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>企业名称不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setGeneralCreditCode(getCellStringValueOrNull(row, count++));
			if (dto.getGeneralCreditCode() == null || !match("^[0-9a-zA-Z]{18}$", dto.getGeneralCreditCode())) {
				infoBuilder.append("导入失败，原因:<br/>统一信用代码不能为空，格式需满足18位数字或字母");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setEnterpriseType(getCellStringValueOrNull(row, count++).trim());
			if (dto.getEnterpriseType() == null||dto.getEnterpriseType().length() < 1||!sysDicts.get("enterprise_type").contains(dto.getEnterpriseType())) {
				infoBuilder.append("导入失败，原因:<br/>企业性质不能为空,并且只能为"+sysDicts.get("enterprise_type").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			

			dto.setCompanyType(getCellStringValueOrNull(row, count++));

			if (dto.getCompanyType() == null||dto.getCompanyType().length() < 1||!sysDicts.get("company_type").contains(dto.getCompanyType())) {
				infoBuilder.append(
						"导入失败，原因:<br/>企业类型不能为空,并且只能为"+sysDicts.get("company_type").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}


			dto.setFoundationDate(getCellDateValueOrNull(row, count++));
			if (dto.getFoundationDate() == null) {
				infoBuilder.append("导入失败，原因:<br/>成立日期不能为空，格式应当为YYYY-MM-DD");
				infoBuilder.append("<br/>");
				return null;
			}
			/*
			 * 营业期限由于之前前端、后端都已经按照string类型处理，所以改bug的时候仍按照string类型，未实现date类型
			 */
			

			dto.setBusinessTerm(getCellStringValueOrNull(row, count++));
			if (dto.getBusinessTerm() == null) {
				infoBuilder.append("导入失败，原因:<br/>营业期限不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
		
			dto.setIssueDate(getCellDateValueOrNull(row, count++));
			if (dto.getIssueDate() == null) {
				infoBuilder.append("导入失败，原因:<br/>发照日期不能为空，格式应当为YYYY-MM-DD");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setRegistrationAuthority(getCellStringValueOrNull(row, count++));
			if (dto.getRegistrationAuthority() == null || dto.getRegistrationAuthority().length() < 1
					|| dto.getRegistrationAuthority().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>登记机关不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBusinessStatus(getCellStringValueOrNull(row, count++));
			if (dto.getBusinessStatus() == null||dto.getBusinessStatus().length() < 1||!sysDicts.get("businessStatus").contains(dto.getBusinessStatus()))  {
				infoBuilder.append("导入失败，原因:<br/>经营状态只能为存续|在业|吊销|注销|迁入|迁出|停业|清算");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setLegalPerson(getCellStringValueOrNull(row, count++));// 10
			if (dto.getLegalPerson() == null || dto.getLegalPerson().length() < 1
					|| dto.getLegalPerson().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>法定代表人不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setLegalPersonCode(getCellStringValueOrNull(row, count++));
			if (dto.getLegalPersonCode() == null || !match("^[0-9a-zA-Z]{18}$", dto.getLegalPersonCode())) {
				infoBuilder.append("导入失败，原因:<br/>法人证件号不能为空或格式不正确");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setCompanyPhone(getCellStringValueOrNull(row, count++));
			if (dto.getCompanyPhone() == null || !match(dto.getCompanyPhone())) {
				infoBuilder.append("导入失败，原因:<br/>企业电话不能为空或格式不正确");
				infoBuilder.append("<br/>");
				return null;
			}
			String value = getNumberCell(row, count++);

			if (value == null || value.length()>15||!match("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$", value)) {

				infoBuilder.append("导入失败，原因:<br/>注册资本（万元）不能为空，不能小于0，保留四位小数，最长为15位");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setRegisteredCapital(new BigDecimal(value));
			// 省份填写允许和系统默认不一致 不作校验 14
			String provincecity = getCellStringValueOrNull(row, count++);
			String provice = null;
			String city = null;
			if (provincecity != null && provincecity.length() > 0) {
				String[] citys = provincecity.split("-");
				if (citys.length == 2) {
					dto.setProvince(citys[0]);
					dto.setCity(citys[1]);
				} else {
					infoBuilder.append("导入失败，原因:<br/>省、市用-进行分割");
					infoBuilder.append("<br/>");
					return null;
				}
			} else {
				infoBuilder.append("导入失败，原因:<br/>所在省、市不能为空");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setAddress(getCellStringValueOrNull(row, count++));
			if (dto.getAddress() == null || dto.getAddress().length() < 1 || dto.getAddress().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>详细地址不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setIndustry(getCellStringValueOrNull(row, count++));
			if (dto.getIndustry() == null||dto.getIndustry().length() < 1||!sysDicts.get("industry").contains(dto.getIndustry())) {
				infoBuilder.append(
						"导入失败，原因:<br/>所属行业不能为空，只能为"+sysDicts.get("industry").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setReturnWorkStatus(returnWorkStatus.get(getCellStringValueOrNull(row, count++)));
			if (dto.getReturnWorkStatus() == null) {
				infoBuilder.append("导入失败，原因:<br/>疫情后复工状态只能为复工和未复工");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setLicenseImgUrl(getCellStringValueOrNull(row, count++));
			if (dto.getLicenseImgUrl() == null || (!match("(?i).+?\\.(jpg|gif|png)", dto.getLicenseImgUrl()))) {
				infoBuilder.append("导入失败，原因:<br/>企业营业执照不能为空,图片为jpg,gif,png");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setIdCardFrontUrl(getCellStringValueOrNull(row, count++));
			if (dto.getIdCardFrontUrl() == null || (!match("(?i).+?\\.(jpg|gif|png)", dto.getIdCardFrontUrl()))) {
				infoBuilder.append("导入失败，原因:<br/>身份证正面不能为空,图片为jpg,gif,png");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setIdCardBackUrl(getCellStringValueOrNull(row, count++));// 20
			if (dto.getIdCardBackUrl() == null || (!match("(?i).+?\\.(jpg|gif|png)", dto.getIdCardBackUrl()))) {
				infoBuilder.append("导入失败，原因:<br/>身份证反面不能为空,图片为jpg,gif,png");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setPark(getCellStringValueOrNull(row, count++));
			if (dto.getPark() == null || dto.getPark().length() < 1 ||!sysDicts.get("park").contains(dto.getPark())) {
				infoBuilder.append("导入失败，原因:<br/>所属园区不能为空,只能为"+sysDicts.get("park").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			value = getCellStringValueOrNull(row, count++);
			if (value == null || (!value.equals("是") && !value.equals("否"))) {
				infoBuilder.append("导入失败，原因:<br/>是否为高新企业只能填是或否");
				infoBuilder.append("<br/>");
				return null;
			}

			boolean high = true;
			if (value.contains("否"))
				high = false;
			dto.setIsHighTech(high);

			String countnumber = getCellStringValueOrNull(row, count++);
			if (countnumber == null || (!match("^[1-9]\\d*$", countnumber))) {
				infoBuilder.append("导入失败，原因:<br/>企业员工数量不能为空，为正整数");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setStaffCount(Integer.parseInt(countnumber));
			value = getNumberCell(row, count++);

			if (value == null || value.length()>15||!match("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$", value)) {
				infoBuilder.append("导入失败，原因:<br/>企业整体收入不能为空，不能小于0，保留四位小数，最多为15位");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setTotalRevenue(new BigDecimal(value));

			dto.setWebsite(getCellStringValueOrNull(row, count++));
			if (dto.getWebsite() == null || dto.getWebsite().length() < 1 || dto.getWebsite().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>单位网址不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setMainPerson(getCellStringValueOrNull(row, count++));
			if (dto.getMainPerson() == null || dto.getMainPerson().length() < 1 || dto.getMainPerson().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>负责人不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setMainPersonDuty(getCellStringValueOrNull(row, count++));
			if (dto.getMainPersonDuty() == null || dto.getMainPersonDuty().length() < 1
					|| dto.getMainPersonDuty().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>负责人职务不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}

			dto.setMainPersonMobile(getCellStringValueOrNull(row, count++));
			if (dto.getMainPersonMobile() == null || (!match(dto.getMainPersonMobile()))) {
				infoBuilder.append("导入失败，原因:<br/>负责人手机不能为空，格式为手机或座机格式");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setMainPersonEmail(getCellStringValueOrNull(row, count++));
			if (dto.getMainPersonEmail() == null || (!match("^.{1,}@.{1,}\\..{1,}$", dto.getMainPersonEmail()))) {
				infoBuilder.append("导入失败，原因:<br/>负责人邮箱不能为空，邮箱格式需包含@");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPerson(getCellStringValueOrNull(row, count++));// 30
			if (dto.getContactPerson() == null || dto.getContactPerson().length() < 1
					|| dto.getContactPerson().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>联系人不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPersonDuty(getCellStringValueOrNull(row, count++));
			if (dto.getContactPersonDuty() == null || dto.getContactPersonDuty().length() < 1
					|| dto.getContactPersonDuty().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>联系人职务不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPersonMobile(getCellStringValueOrNull(row, count++));
			if (dto.getContactPersonMobile() == null || (!match(dto.getContactPersonMobile()))) {
				infoBuilder.append("导入失败，原因:<br/>联系人手机不能为空，格式为手机或座机格式");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPersonEmail(getCellStringValueOrNull(row, count++));
			if (dto.getContactPersonEmail() == null || (!match("^.{1,}@.{1,}\\..{1,}$", dto.getContactPersonEmail()))) {
				infoBuilder.append("导入失败，原因:<br/>联系人邮箱不能为空，邮箱格式需包含@");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPersonWechat(getCellStringValueOrNull(row, count++));
			if (dto.getContactPersonWechat() == null) {
				infoBuilder.append("导入失败，原因:<br/>联系人微信不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setContactPersonAddress(getCellStringValueOrNull(row, count++));
			if (dto.getContactPersonAddress() == null || dto.getContactPersonAddress().length() < 1
					|| dto.getContactPersonAddress().length() > 100) {
				infoBuilder.append("导入失败，原因:<br/>联系人地址不能为空，长度不能超过100");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBusinessScope(getCellStringValueOrNull(row, count++));
			if (dto.getBusinessScope() == null || dto.getBusinessScope().length() < 1
					|| dto.getBusinessScope().length() > 500) {
				infoBuilder.append("导入失败，原因:<br/>企业简介及经营范围不能为空，长度不能超过500");
				infoBuilder.append("<br/>");
				return null;
			}
			count++;
			count++;
			count++;
			count++;
			count++;
			dto.setType(getCellStringValueOrNull(row, count++));
			if (dto.getType() == null||!sysDicts.get("company_type").contains(dto.getType())) {
				infoBuilder.append("导入失败，原因:<br/>企业定位不能为空，只能为"+sysDicts.get("company_type").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBuildTeamDate(getCellDateValueOrNull(row, count++));
			if (dto.getBuildTeamDate() == null) {
				infoBuilder.append("导入失败，原因:<br/>组建区块链团队日期不能为空，格式应当为YYYY-MM-DD");
				infoBuilder.append("<br/>");
				return null;
			}
			countnumber = getCellStringValueOrNull(row, count++);
			if (countnumber == null || (!match("^[1-9]\\d*$", countnumber))) {
				infoBuilder.append("导入失败，原因:<br/>区块链业务员工不能为空，为正整数");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBlockchainStaffCount(Integer.parseInt(countnumber));
			value = getNumberCell(row, count++);

			if (value == null || value.length()>15||!match("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$", value)) {
				infoBuilder.append("导入失败，原因:<br/>区块链业务收入（万元）不能为空，不能小于0，保留四位小数，不能超过15位");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBlockchainRevenue(new BigDecimal(value));
			dto.setBlockchainteamvarious(getCellStringValueOrNull(row, count++));
			if (dto.getBlockchainteamvarious() == null || dto.getBlockchainteamvarious().length() < 1
					|| dto.getBlockchainteamvarious().length() > 150) {
				infoBuilder.append("导入失败，原因:<br/>区块链团队主要变动及原因不能为空，长度不能150");
				infoBuilder.append("<br/>");
				return null;
			}
			dto.setBlockchainInnovate(getCellStringValueOrNull(row, count++));// 47
			if (dto.getBlockchainInnovate() == null || dto.getBlockchainInnovate().length() < 1
					|| dto.getBlockchainInnovate().length() > 800) {
				infoBuilder.append("导入失败，原因:<br/>区块链领域创新情况不能为空，长度不超过800");
				infoBuilder.append("<br/>");
				return null;
			}
			List<ProductInfoVO> productInfos=Savadata1(sheetAt1,infoBuilder);//获取处理情况
			if(productInfos==null)return null;
			dto.setProductInfos(productInfos);
			
			List<InvestmentFinacingVO> investmetnfinacing=Savadata3(sheetAt3,infoBuilder,sysDicts);
			if(investmetnfinacing==null)return null;
			dto.setInvestmetnfinacing(investmetnfinacing);
//			List<FounderProfileVO> founderprofiles=Savadata4and5(sheetAt4,sheetAt5,infoBuilder);
//			if(founderprofiles==null)return null;
//			dto.setFounderprofiles(founderprofiles);
//			List<ExpertVO> experts=Savadata6(sheetAt6,infoBuilder,sysDicts);
//			if(experts==null)return null;
//			dto.setExperts(experts);

			dto.setAuditStatus(0);
			dto.setTianxiestatus(1);
			LocalDate localDateTime = LocalDate.now();
			dto.setSubmitDate(localDateTime);
			return dto;

		} catch (Exception e) {
			e.printStackTrace();
			if(e.getMessage().equals("Cannot get a numeric value from a text cell")||e.getMessage().equals("Cannot get a text value from a numeric cell")) {
				infoBuilder.append("导入失败<br/>原因：").append("收入、注册资本单元格格式为小数，不能小于0，保留四位小数").append("<br/>");
			}
			else infoBuilder.append("导入失败<br/>原因：").append(e.getMessage()).append("<br/>");
			return null;
		}
	}
	/*
	 * 表示企业创始人和技术带头人
	 */
	private List<FounderProfileVO> Savadata4and5(Sheet sheetAt4,Sheet sheetAt5, StringBuilder infoBuilder) {
		int lastRowNumInSheet2=sheetAt4.getLastRowNum();
		Row row4 = sheetAt4.getRow(1);

		if (row4 == null) {
			infoBuilder.append("导入失败，原因:<br/>企业创始人内容为空");
			infoBuilder.append("<br/>");
			return null;
		}
		if (lastRowNumInSheet2 > 3) {
			infoBuilder.append("企业创始人超过3个");
			infoBuilder.append("<br/>");
			return null;
		}
		int lastRowNumInSheet5=sheetAt5.getLastRowNum();
		Row row5 = sheetAt5.getRow(1);

		if (row5 == null) {
			infoBuilder.append("导入失败，原因:<br/>技术带头人内容为空");
			infoBuilder.append("<br/>");
			return null;
		}
		if (lastRowNumInSheet5 > 3) {
			infoBuilder.append("技术带头人超过3个");
			infoBuilder.append("<br/>");
			return null;
		}	
		List<FounderProfileVO> customerCompanyInfos=new ArrayList<FounderProfileVO>();
		for (int i = 1; i <= lastRowNumInSheet2; i++) {
			FounderProfileVO cust = new FounderProfileVO();
			Row row = sheetAt4.getRow(i);
			int count=0;

			cust.setName(getCellStringValueOrNull(row, count++));
			if (cust.getName()== null||cust.getName().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			String countnumber=getCellStringValueOrNull(row, count++);
			if (countnumber == null || (!match("^[1-9]\\d*$", countnumber))) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人年龄不能为空，为正整数");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setAge(Integer.parseInt(countnumber));
			cust.setEducation(getCellStringValueOrNull(row, count++));
			if (cust.getEducation()== null||cust.getEducation().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人最高学历不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setSchool(getCellStringValueOrNull(row, count++));
			if (cust.getSchool()== null||cust.getSchool().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人毕业院校不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setWorkExper(getCellStringValueOrNull(row, count++));
			if (cust.getWorkExper()== null||cust.getWorkExper().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人工作经历不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setMajorResult(getCellStringValueOrNull(row, count++));
			if (cust.getMajorResult()== null||cust.getMajorResult().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>企业创始人专业成果不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setDuty(getCellStringValueOrNull(row, count++));
			cust.setReward(getCellStringValueOrNull(row, count++));
			cust.setType(0);
			customerCompanyInfos.add(cust);

		}
		for (int i = 1; i <= lastRowNumInSheet5; i++) {
			FounderProfileVO cust = new FounderProfileVO();
			Row row = sheetAt5.getRow(i);
			int count=0;

			cust.setName(getCellStringValueOrNull(row, count++));
			if (cust.getName()== null||cust.getName().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			String countnumber=getCellStringValueOrNull(row, count++);
			if (countnumber == null || (!match("^[1-9]\\d*$", countnumber))) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人年龄不能为空，为正整数");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setAge(Integer.parseInt(countnumber));
			cust.setEducation(getCellStringValueOrNull(row, count++));
			if (cust.getEducation()== null||cust.getEducation().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人最高学历不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setSchool(getCellStringValueOrNull(row, count++));
			if (cust.getSchool()== null||cust.getSchool().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人毕业院校不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setWorkExper(getCellStringValueOrNull(row, count++));
			if (cust.getWorkExper()== null||cust.getWorkExper().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人工作经历不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setMajorResult(getCellStringValueOrNull(row, count++));
			if (cust.getMajorResult()== null||cust.getMajorResult().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>技术带头人专业成果不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setType(1);
			cust.setDuty(getCellStringValueOrNull(row, count++));
			cust.setReward(getCellStringValueOrNull(row, count++));
			customerCompanyInfos.add(cust);

		}

		return customerCompanyInfos;
	}
	/*
	 * 专家顾问
	 */


	private List<ExpertVO> Savadata6(Sheet sheetAt6,StringBuilder infoBuilder, Map<String, List<String>> sysDicts) {
		int lastRowNumInSheet=sheetAt6.getLastRowNum();
		Row row = sheetAt6.getRow(1);
		if (row == null) {
			infoBuilder.append("导入失败，原因:<br/>专家顾问内容为空");
			infoBuilder.append("<br/>");
			return null;
		}
		if (lastRowNumInSheet > 10) {
			infoBuilder.append("专家信息超过10个");
			infoBuilder.append("<br/>");
			return null;
		}
		List<ExpertVO> customerCompanyInfos=new ArrayList<ExpertVO>();
		for (int i = 1; i <= lastRowNumInSheet; i++) {
			ExpertVO cust = new ExpertVO();
			row = sheetAt6.getRow(i);
			int count=0;

			cust.setName(getCellStringValueOrNull(row, count++));
			if (cust.getName()== null||cust.getName().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>专家名称不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			String countnumber=getCellStringValueOrNull(row, count++);
			if (countnumber == null || (!match("^[1-9]\\d*$", countnumber))) {
				infoBuilder.append("导入失败，原因:<br/>年龄不能为空，为正整数");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setAge(Integer.parseInt(countnumber));
			cust.setProfessionalTitle(getCellStringValueOrNull(row, count++));
			if (cust.getProfessionalTitle()== null||!sysDicts.get("professional_title").contains(cust.getProfessionalTitle()))  {
				infoBuilder.append("导入失败，原因:<br/>专家职称不能为空，只能为"+sysDicts.get("professional_title").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			
			cust.setDuty(getCellStringValueOrNull(row, count++));
			if (cust.getDuty()== null||cust.getDuty().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>专家职务不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setUnit(getCellStringValueOrNull(row, count++));
			if (cust.getUnit()== null||cust.getUnit().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>专家单位不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setWorkResult(getCellStringValueOrNull(row, count++));
			if (cust.getWorkResult()== null||cust.getWorkResult().trim().length()==0 ) {
				infoBuilder.append("导入失败，原因:<br/>专家工作成果不能为空");
				infoBuilder.append("<br/>");
				return null;
			}
			cust.setSocialDuty(getCellStringValueOrNull(row, count++));
			cust.setReward(getCellStringValueOrNull(row, count++));
			customerCompanyInfos.add(cust);

		}
		return customerCompanyInfos;

	}
	/*
	 * 表示投融资情况
	 */
	private List<InvestmentFinacingVO> Savadata3(Sheet sheetAt3,StringBuilder infoBuilder, Map<String, List<String>> sysDicts) {

		int lastRowNumInSheet2=sheetAt3.getLastRowNum();
		Row row = sheetAt3.getRow(1);
		if (row == null) {
			infoBuilder.append("导入失败，原因:<br/>投融资内容为空");
			infoBuilder.append("<br/>");
			return null;
		}
		List<InvestmentFinacingVO> customerCompanyInfos=new ArrayList<InvestmentFinacingVO>();
		for (int i = 1; i <= lastRowNumInSheet2; i++) {
			InvestmentFinacingVO cust = new InvestmentFinacingVO();
			row = sheetAt3.getRow(i);
			
			cust.setLunci(getCellStringValueOrNull(row, 0));
			if(cust==null||!sysDicts.get("lunci").contains(cust.getLunci()))
			{
				infoBuilder.append("导入失败，原因:<br/>投融资轮次不能为空，只能为"+sysDicts.get("lunci").toString().replace("[", "").replace("]", ""));
				infoBuilder.append("<br/>");
				return null;
			}
			try {
				cust.setTime(getCellDateValueOrNull(row, 1));
				if (cust.getTime() == null) {
					infoBuilder.append("导入失败，原因:<br/>投资日期不能为空，格式应当为YYYY-MM-DD");
					infoBuilder.append("<br/>");
					return null;
				}
			}
			catch(Exception e) {
				infoBuilder.append("导入失败，原因:<br/>投资日期不能为空，格式应当为YYYY-MM-DD");
				infoBuilder.append("<br/>");
				return null;
			}
			try {
				String value = getNumberCell(row, 2);

				if (value == null || value.length()>15||!match("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$", value)) {
					infoBuilder.append("导入失败，原因:<br/>投资总金额（万元）不能为空，不能小于0，保留四位小数，不能超过15位");
					infoBuilder.append("<br/>");
					return null;
				}
				cust.setCount(new BigDecimal(value));
			}
			catch(Exception e) {

				infoBuilder.append("导入失败，原因:<br/>投资总金额（万元）不能为空，不能小于0，保留四位小数，不能超过15位");
				infoBuilder.append("<br/>");
				return null;

			}
			cust.setSource(getCellStringValueOrNull(row, 3));
			customerCompanyInfos.add(cust);

		}
		return customerCompanyInfos;

	}
	/*
	 * 客户信息表 不超过10个
	 */
	private List<CustomerCompanyDTO> Savadata2(Sheet sheetAt2,StringBuilder infoBuilder) {
		int lastRowNumInSheet2=sheetAt2.getLastRowNum();
		List<CustomerCompanyDTO> customerCompanyInfos=new ArrayList<CustomerCompanyDTO>();
		if (lastRowNumInSheet2 > 10) {
			infoBuilder.append("企业信息表超过10个");
			infoBuilder.append("<br/>");
			return null;
		}
		for (int i = 1; i <= lastRowNumInSheet2; i++) {
			CustomerCompanyDTO cust = new CustomerCompanyDTO();
			Row row = sheetAt2.getRow(i);
			String name = getCellStringValueOrNull(row, 0);
			String introduction = getCellStringValueOrNull(row, 1);
			if (name != null && introduction != null) {
				if (name.length() > 0 && introduction.length() > 0 && name.length() < 101
						&& introduction.length() < 151) {
					cust.setName(name);
					cust.setEnterpriseType(introduction);
					customerCompanyInfos.add(cust);
				} else {
					infoBuilder.append("客户企业表第").append(i + 1).append("行导入失败<br/>原因：字段长度超过阈值<br/>");
					infoBuilder.append("<br/>");
					return  null;
				}
			} else {
				infoBuilder.append("客户企业表第").append(i + 1).append("行导入失败<br/>原因：字段有缺失<br/>");
				infoBuilder.append("<br/>");
				return  null;
			}
		}
		return customerCompanyInfos;

	}
	/*
	 * TODO 产品表 不超过10个
	 */
	private List<ProductInfoVO> Savadata1(Sheet sheetAt1,StringBuilder infoBuilder) {
		List<ProductInfoVO> productInfos=new ArrayList<>();
		int lastRowNumInSheet2=sheetAt1.getLastRowNum();
		if (lastRowNumInSheet2 > 11) {
			infoBuilder.append("产品信息表超过10个");
			infoBuilder.append("<br/>");
			return null;
		}
		ProductInfoVO dto1 = new ProductInfoVO();
		List<UseCaseVO> usecase=new ArrayList<UseCaseVO>();
		for (int i = 2; i <= lastRowNumInSheet2; i++) {
            int count=0;
			Row row = sheetAt1.getRow(i);
			if(getCellStringValueOrNull(row, 0)==null||getCellStringValueOrNull(row, 0).length()==0) {
				count=8;
				UseCaseVO useca=new UseCaseVO();
				useca.setName(getCellStringValueOrNull(row, count++));//count为7
				if(useca.getName()==null||useca.getName().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例名称不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setCompany(getCellStringValueOrNull(row, count++));
				if(useca.getCompany()==null||useca.getCompany().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例合作企业不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				try {
					useca.setSubmitDate(getCellDateValueOrNull(row, count++));
					if (useca.getSubmitDate() == null) {
						infoBuilder.append("导入失败，原因:<br/>上线时间不能为空，格式应当为YYYY-MM-DD");
						infoBuilder.append("<br/>");
						return null;
					}
				}
				catch(Exception e) {
					infoBuilder.append("导入失败，原因:<br/>上线时间不能为空，格式应当为YYYY-MM-DD");
					infoBuilder.append("<br/>");
					return null;
				}
				
				useca.setAppliLocation(getCellStringValueOrNull(row, count++));
				if(useca.getAppliLocation()==null||useca.getAppliLocation().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例应用地点不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setProblem(getCellStringValueOrNull(row, count++));
				if(useca.getProblem()==null||useca.getProblem().length()<1||useca.getProblem().length()>1000) {
					infoBuilder.append("导入失败，原因:<br/>案例详细介绍及解决的问题不能为空，长度不能超过1000字");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setValue(getCellStringValueOrNull(row, count++));
				if(useca.getValue()==null||useca.getValue().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例应用成效与意义不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				usecase.add(useca);
			}
			else {
				count++;
				if(dto1.getName()!=null) {
					dto1.setUseCase(usecase);
					productInfos.add(dto1);
				}
				dto1 = new ProductInfoVO();
				usecase.clear();
				String name = getCellStringValueOrNull(row, count++);
				if(name==null||name.length()<1||name.length()>100) {
					infoBuilder.append("导入失败，原因:<br/>产品名称不能为空，长度不超过100");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setName(name);	
				String url = getCellStringValueOrNull(row, count++);
				if(url==null||url.length()<1||url.length()>100) {
					infoBuilder.append("导入失败，原因:<br/>产品链接不能为空，长度不超过100");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setUrl(url);
				String firsttype = firsttypes.get(getCellStringValueOrNull(row, count++));
				if(firsttype==null||firsttype.length()<1) {
					infoBuilder.append("导入失败，原因:<br/>产品类型一级不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setFirsttype(firsttype);
				String sectype = sectypes.get(getCellStringValueOrNull(row, count++));
				if(sectype==null||sectype.length()<1) {
					infoBuilder.append("导入失败，原因:<br/>产品类型二级不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setSectype(sectype);
				String typeadd = getCellStringValueOrNull(row, count++);
				if(typeadd!=null&&typeadd.length()>100) {
					infoBuilder.append("导入失败，原因:<br/>产品类型补充不能超过100");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setTypeadd(typeadd);
				String advance = getCellStringValueOrNull(row, count++);
				if(advance==null||advance.length()<1||advance.length()>800) {
					infoBuilder.append("导入失败，原因:<br/>技术先进性不能为空，长度不超过800");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setAdvance(advance);
				String createAblity = getCellStringValueOrNull(row, count++);
				if(createAblity==null||createAblity.length()<1||createAblity.length()>800) {
					infoBuilder.append("导入失败，原因:<br/>创新性不能为空，长度不超过800");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setCreateAblity(createAblity);
				UseCaseVO useca=new UseCaseVO();
				useca.setName(getCellStringValueOrNull(row, count++));//count为7
				if(useca.getName()==null||useca.getName().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例名称不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setCompany(getCellStringValueOrNull(row, count++));
				if(useca.getCompany()==null||useca.getCompany().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例合作企业不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				try {
					useca.setSubmitDate(getCellDateValueOrNull(row, count++));
					if (useca.getSubmitDate() == null) {
						infoBuilder.append("导入失败，原因:<br/>上线时间不能为空，格式应当为YYYY-MM-DD");
						infoBuilder.append("<br/>");
						return null;
					}
				}
				catch(Exception e) {
					infoBuilder.append("导入失败，原因:<br/>上线时间不能为空，格式应当为YYYY-MM-DD");
					infoBuilder.append("<br/>");
					return null;
				}
				
				useca.setAppliLocation(getCellStringValueOrNull(row, count++));
				if(useca.getAppliLocation()==null||useca.getAppliLocation().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例应用地点不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setProblem(getCellStringValueOrNull(row, count++));
				if(useca.getProblem()==null||useca.getProblem().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例解决的问题不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				useca.setValue(getCellStringValueOrNull(row, count++));
				if(useca.getValue()==null||useca.getValue().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>应用案例应用成效与意义不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				usecase.add(useca);
				dto1.setUseCase(usecase);
				ProductScaleVO projectvo=new ProductScaleVO();
				projectvo.setCountscale(getCellStringValueOrNull(row, count++));
				if(projectvo.getCountscale()==null||projectvo.getCountscale().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>产品规模产品落地数量不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				projectvo.setInfoscale(getCellStringValueOrNull(row, count++));
				if(projectvo.getInfoscale()==null||projectvo.getInfoscale().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>产品规模服务用户规模不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				projectvo.setUsercscale(getCellStringValueOrNull(row, count++));
				if(projectvo.getUsercscale()==null||projectvo.getUsercscale().length()<1) {
					infoBuilder.append("导入失败，原因:<br/>产品规模上链信息规模不能为空");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setProductscale(projectvo);
				String logicsecurity = getCellStringValueOrNull(row, count++);
				if(logicsecurity==null||logicsecurity.length()<1||logicsecurity.length()>800) {
					infoBuilder.append("导入失败，原因:<br/>安全性不能为空，长度不超过800");
					infoBuilder.append("<br/>");
					return null;
				}
				dto1.setSecurity(logicsecurity);

				String value=getCellStringValueOrNull(row, count++);
				if (value == null || (!value.equals("是") && !value.equals("否"))) {
					infoBuilder.append("导入失败，原因:<br/>是否开源只能填是或否");
					infoBuilder.append("<br/>");
					return null;
				}
				if(value.equals("是")) value="1";
				else value="0";
				dto1.setOpensource(value);
				String projectlevel = projectlevels.get(getCellStringValueOrNull(row, count++));
				if(projectlevel == null) {
					infoBuilder.append("导入失败，原因:<br/>项目级别不能为空");
					infoBuilder.append("<br/>");
					return null;
				}

				dto1.setProjectlevel(projectlevel);
				
			}
			
			
			
			
		}
		productInfos.add(dto1);
		return productInfos;

	}

	private LocalDate getCellDateValueOrNull(Row row, int i) {
		if (row == null) {
			return null;
		}
		Cell cell = row.getCell(i);
		String cellValue = null;
		if (cell != null) {
			cell.setCellType(Cell.CELL_TYPE_STRING);
			cellValue = cell.getStringCellValue().trim();
			String[] result = cellValue.split("-");
			if (result.length == 3 && result[0].length() == 4 && result[1].length() == 2 && result[2].length() == 2) {
				DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");

				LocalDate ldt = LocalDate.parse(cellValue, df);
				return ldt;
			}

		}
		return null;
	}
	private String getNumberCell(Row row, int i) {
		Cell cell = row.getCell(i);
		if (cell != null) {
			String cellValue=NumberToTextConverter.toText(cell.getNumericCellValue());

			if(cellValue.equals("0"))
				return null;
			return cellValue;
		}
		return null;
	}
	/**
	 * 从Cell获取String类型的值
	 * 
	 * @param row
	 * @param i
	 * @return
	 */
	private String getCellStringValueOrNull(Row row, int i) {
		if (row == null) {
			return null;
		}
		Cell cell = row.getCell(i);
		String cellValue = null;
		if (cell != null) {
			cell.setCellType(Cell.CELL_TYPE_STRING);
			cellValue = cell.getStringCellValue().trim();
			if(cellValue.length()==0)
				cellValue=null;

		}
		return cellValue;
	}

	public boolean match(String pattern, String content) {
		return Pattern.matches(pattern, content);
	}

	public boolean match(String content) {
		String p1 = "0\\d{2,3}-[1-9]\\d{6,7}";
		String p2 = "1[3-9]\\d{9}";
		if (!Pattern.matches(p1, content))
			return Pattern.matches(p2, content);
		else
			return true;
	}

	public static void main(String[] args) {
		String content="4.3234";
		String pattern="^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$";
		System.out.println(Pattern.matches(pattern,content));
		String value="523.13139999999999";
		int index=value.indexOf(".");

		String indexstring=value.substring(index);
		if(index>-1&&indexstring.length()>10) {
			System.out.println(value.substring(0,index+5));
		}

		if(value!=null&&value.length()==19&&value.contains("00000000000"))
			System.out.println(value.length()+"  "+value.substring(0,6));
		//String url="C:/Users/sec/Downloads/test.xlsx";
		/*
		 * String url="C:/Users/sec/Desktop/test3.xlsx"; File file=new File(url);
		 */
		//		try {
		//			FileInputStream fileInputStream = new FileInputStream(file);
		//			Workbook wb = new XSSFWorkbook(fileInputStream);
		//			Sheet sheetAt0 = wb.getSheetAt(0);
		//
		//			int sheetcount=wb.getNumberOfSheets();
		//			int lastRowNumInSheet0 = sheetAt0.getLastRowNum();
		//			System.out.println(lastRowNumInSheet0);
		////			Sheet sheetAt1 = wb.getSheetAt(1);
		////			Sheet sheetAt2 = wb.getSheetAt(2);
		////			int lastRowNumInSheet0 = sheetAt0.getLastRowNum();
		////			int lastRowNumInSheet1 = sheetAt1.getLastRowNum();
		////			int lastRowNumInSheet2 = sheetAt2.getLastRowNum();
		////			System.out.println(lastRowNumInSheet0+"  "+lastRowNumInSheet1+"   "+lastRowNumInSheet2);
		//		}
		//		catch(Exception e) {
		//			e.printStackTrace();
		//		}


	}
}